package com.yita.lambda;

public class Demo01_Syntax {
    public static void main(String[] args) {
        System.out.println("<-----test01----->");
        // 无返回值无个参数 LambdaNoneReturnNoneParameter
        LambdaNoneReturnNoneParameter lambda01=()->{
            System.out.println("test01");
        };
        lambda01.test();

        System.out.println("<-----test02----->");
        // 无返回值单个参数 LambdaNoneReturnSingleParameter
        LambdaNoneReturnSingleParameter lambda02 = (a) -> {
            System.out.println("test02"+"---"+a);
        };
        lambda02.test(123);

        System.out.println("<-----test03----->");
        // 无返回值多个参数 LambdaNoneReturnMulParameter
        LambdaNoneReturnMulParameter lambda03 = (a, b) -> {
            System.out.println("test03" + "-----" + (a + b));
        };
        lambda03.test(3,4 );

        System.out.println("<-----test04----->");
        // 有返回值单个参数 LambdaSingleReturnSingleParmter
        LambdaSingleReturnSingleParameter lambda04 = (a) -> {
            System.out.println("test04" + "---" + a);
            return a;
        };
        System.out.println(lambda04.test(5));

        System.out.println("<-----test05----->");
        // 有返回值多个参数 LambdaSingleReturnMulParameter
        LambdaSingleReturnMulParameter lambda05=(a,b)->{
            System.out.println("test05"+"---"+a+b);
            return a+b;
        };
        System.out.println(lambda05.test(3,4 ));
    }

}


//无返回值无参数
@FunctionalInterface
interface LambdaNoneReturnNoneParameter {
    void test();
}

//无返回值单个参数
@FunctionalInterface
interface LambdaNoneReturnSingleParameter{
    void test(int a);
}

//无返回值多个参数
@FunctionalInterface
interface LambdaNoneReturnMulParameter{
    void test(int a, int b);
}

//有返回值无参数
@FunctionalInterface
interface LambdaSingleReturnNoneParameter{
    int test();
}

//有返回值单个参数
@FunctionalInterface
interface LambdaSingleReturnSingleParameter{
    int test(int a);
}

//有返回值多个参数
@FunctionalInterface
interface LambdaSingleReturnMulParameter{
    int test(int a, int b);
}
